package cn.com.twoke.application.game.mario.core.ecs.level;

import cn.com.twoke.application.game.mario.core.ecs.level.data.LevelData;
import cn.com.twoke.application.game.mario.core.ecs.level.loader.LevelLoaderFactory;

/**
 * 关卡管理器
 */
public interface LevelManager {

    /**
     * 添加关卡
     * @param level
     */
    void add(Level level);

    /**
     * 获取挡墙关卡
     * @return
     */
    Level current();

    /**
     * 进入某一个关卡
     * @param name
     */
    void checkin(String name);

    /**
     * 加载关卡
     * @param levelData 关卡数据
     */
    default void load(LevelData levelData) {
        this.add(LevelLoaderFactory.get(levelData.getClass()).load(levelData));
    }

}
